import XEUtils from 'xe-utils';

// 组件的props定义
export const compProps = {
	// 表格标题
	title: { type: [String], default: '' },
	// 表格字段
	columns: { type: Array, default: [] },
	// 自定义行数据唯一主键的字段名
	keyField: { type: [String, Number] },
	// 是否进行加密传输
	secret: { type: [Boolean], default: false },
	// 请求方式
	method: { type: [String], default: 'post' },
	// 请求方法
	request: { type: [Object, Function, String] },
	// 请求参数
	params: { type: Object, default: () => ({}) },
	// 请求地址
	dataUrl: { type: String, default: undefined },
	// 参数类型 data|params
	paramsType: { type: String, default: 'data' },
	// 是否开启合计行
	totaled: { type: Boolean, default: false },
	// 是否开启平均行
	average: { type: Boolean, default: false },
	// 自动加载
	autoLoad: { type: [Boolean], default: true },
	// 点击刷新图标是否自动刷新
	autoRefresh: { type: [Boolean], default: true },
	// 表格刷新类型 query仅查询，reload重置并查询
	refreshType: { type: [String], default: 'reload' },
	// 数据代理回调方法
	responseHandle: [Function],
	// 表格序号 { enabled: false, fixed: 'left|right|空' }
	seqConfig: { type: [Boolean, String, Object], default: true },
	// 选框配置
	boxConfig: { type: [Boolean, String, Object], default: false },
	// 编辑配置
	editConfig: { type: [Boolean, String, Object], default: false },
	// 分页配置
	pagerConfig: { type: [Boolean, Object ], default: true },
	// 工具栏配置
	toolbarConfig: { type: [Boolean, Object ], default: true },
	// 表格数字格式化配置
	numberFormat: { type: String, default: '000,000,000,000.00####' }
};

// props默认的配置
export const defaultProps = XEUtils.clone(
	{
		// 基础配置
		baseAttrs: {
			// 表格尺寸 medium, small, mini
			size: 'small',
			// 所有的列对齐方式
			align: 'left',
			// 表格高度
			height: 'auto',
			// 是否带有边框 [default（默认）, full（完整边框）, outer（外边框）, inner（内边框）, none（无边框）]
			border: true,
			// 是否自动监听父元素的变化去重新计算表格
			autoResize: true,
			
			// 所有的表头列的对齐方式 left（左对齐）, center（居中对齐）, right（右对齐）
			headerAlign: 'center',
			// 是否展示表尾数据， 默认为true
			showFooter: true,
			// ellipsis（只显示省略号）,title（并且显示为原生 title）,tooltip（并且显示为 tooltip 提示）
			showOverflow: true,
			// 设置表头所有内容过长时显示为省略号
			showHeaderOverflow: true,
			// 设置表尾所有内容过长时显示为省略号
			showFooterOverflow: true,
			// 给表头的行附加 className
			headerRowClassName: 'rk-grid-header-row',
			// 给表头的单元格附加 className
			headerCellClassName: 'rk-grid-header-cell',
			// 给表尾的行附加 className
			footerRowClassName: 'rk-grid-footer-row',
			// 给表尾的单元格附加 className
			footerCellClassName: 'rk-grid-footer-cell',
		},
		// 行配置信息
		rowConfig: {
			// 当鼠标移到行时，是否要高亮当前行
			isHover: true,
			// 当鼠标点击行时，是否要高亮当前行
			isCurrent: false,
		},
		// 编辑配置
		editConfig: {
			//编辑模式
			mode: 'cell',
			//自定义可编辑列的状态图标
			icon: 'fa fa-pencil-square-o',
			//触发方式
			trigger: 'click',
			//enabled
			enabled: true,
			// 是否显示单元格新增与修改状态 为true时，需要keepSource为true
			showStatus: false,
		},
		// 排序配置
		sortConfig: {
			// 所有列是否使用服务端排序
			remote: false,
			// 触发方式 default（点击按钮触发）, cell（点击表头触发）
			trigger: 'cell',
			// 是否显示列头排序图标
			showIcon: true,
		},
		// 单选通用配置
		radioConfig: {
			// 触发方式
			trigger: 'row',
			// 高亮选中行
			highlight: false,
		},
		// 分页配置信息
		pagerConfig: {
			border: true,
			enabled: true,
			layouts: ['Sizes', 'PrevJump', 'PrevPage', 'JumpNumber', 'NextPage', 'NextJump', 'FullJump', 'Total'],
			pageSize: 20,
			pageSizes: [20, 50, 100, 200],
			className: 'rk-grid-pager',
			background: true,
		},
		// 异步请求配置
		proxyConfig: {
			seq: true,
			props: { result: 'result', total: 'total' },
			response: { result: 'result', total: 'total' }
		},
		// 列配置信息
		columnConfig: {
			// 每一列是否启用列宽调整
			resizable: true,
		},
		// 工具栏配置信息
		toolbarConfig: {
			// 是否允许最大化
			zoom: true,
			// 打印按钮配置
			print: false,
			// 导入按钮配置（需要设置 "import-config"）
			import: false,
			// 导出按钮配置（需要设置 "export-config"）
			export: false,
			// 自定义列配置
			custom: false,
			// 是否开启
			enabled: true,
			// 刷新
			refresh: true,
			// 是否加载中
			loading: false,
			// 给工具栏 className
			className: 'rk-grid-toolbar',
			// 插槽配置
			slots: {
				// 右侧工具列表
				tools: 'toolbar_right',
				// 按钮列表
				buttons: 'toolbar_left',
			},
		},
		// 提示配置
		tooltipConfig: {
			// 所有单元格开启工具提示
			showAll: true,
			// 鼠标是否可进入到工具提示中
			enterable: true,
		},
		// 多选通用配置
		checkboxConfig: {
			// 开启复选框范围选择功能
			range: false,
			// 触发方式
			trigger: 'cell',
			// 高亮勾选行
			highlight: false,
		},
	},
	true
);
